package com.wl.cloud.system.dao;

import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.wl.cloud.core.mybatis.CustomBaseMapper;
import com.wl.cloud.system.domain.SysResource;
import com.wl.cloud.system.support.dto.query.SysResourceQueryDTO;
import com.wl.cloud.system.support.vo.InitSysResourceVO;
import com.wl.cloud.system.support.vo.SysResourceVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 资源表 Mapper接口
 *
 * @author wanglin
 * @since 2023-09-18
 */
@Mapper
public interface SysResourceMapper extends CustomBaseMapper<SysResource> {
    /**
     * 查询资源表
     *
     * @return
     */
    List<SysResourceVO> selectSysResourceList();

    /**
     * 查询资源表
     *
     * @return
     */
//    List<SysResourceVO> selectResourceList();


    /**
     * 根据ids查询集合
     *
     * @param ids
     * @return
     */
    List<SysResourceVO> selectByBatchIds(@Param("ids") List<String> ids);


    /**
     * 根据条件分页查询已配用户角色列表
     *
     * @param page
     * @param queryDto
     * @return
     */
//    IPage<SysResourceVO> selectAllocatedList(IPage<SysResourceVO> page, @Param("queryDto") SysResourceQueryDTO queryDto);


    /**
     * 所有资源列表
     *
     * @return
     */
    List<SysResourceVO> selectResourceTreeAll();

    /**
     * 根据用户ID查询资源
     *
     * @param userId
     * @return
     */
    List<SysResourceVO> selectResourceListByUserId(@Param("userId") String userId);

    /**
     * 根据条件分页查询已配用户角色列表
     *
     * @param page
     * @param queryDto
     * @return
     */
    IPage<SysResourceVO> selectTreeResourcePage(IPage<SysResourceVO> page, @Param("queryDto") SysResourceQueryDTO queryDto);

    /**
     * 根据条件分页查询已配用户角色列表
     *
     * @param page
     * @param queryDto
     * @return
     */
    IPage<SysResourceVO> selectResourcePage(IPage<SysResourceVO> page, @Param("queryDto") SysResourceQueryDTO queryDto);

    /**
     * 资源列表
     *
     * @param queryDto
     * @return
     */
    List<SysResourceVO> selectResourceList1(@Param("queryDto") SysResourceQueryDTO queryDto);

    /**
     * 资源列表
     *
     * @param queryWrapper
     * @return
     */
    List<SysResourceVO> selectResourceList(@Param(Constants.WRAPPER) Wrapper<SysResource> queryWrapper);

    /**
     * 获取初始化系统资源
     *
     * @return
     */
    List<InitSysResourceVO> getInitSysResourceList();
}